perm filename PGEN.SAI[REV,MUS] blob sn#273041 filedate 1977-05-24 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "PGEN"
C00004 00003	SETPRINT("PRIMES.SAI","F")
C00005 ENDMK
C⊗;
BEGIN "PGEN"
REQUIRE "HEADER.SAI" SOURCE_FILE;

DEFINE #PRIMES=1008;

PRELOAD_WITH 2,3,5;
SAFE INTEGER ARRAY PRIMES[1:#PRIMES];
INTEGER index,prospect,inc,i,top;

index ← 3; prospect ← 5; inc ← 4;
WHILE
   index < #PRIMES
 DO BEGIN "next prospect"
   prospect ← prospect+(inc ← 6-inc);
   top ← SQRT(prospect);

   FOR
      i ← 3 STEP 1
    WHILE
      prospect MOD PRIMES[i] ≠ 0
    DO
      IF
         PRIMES[i] ≥ top
       THEN BEGIN
         PRIMES[index ← index+1] ← prospect;
         DONE;
         END;

   END   "next prospect";

SETPRINT("PRIMES.SAI","F");
SETFORMAT(0,0);

PRINT(
"ENTRY;
BEGIN ""PRIMES""
INTERNAL INTEGER #PRIMES;
SIMPLE PROCEDURE init_#PRIMES;
   #PRIMES ← ",#PRIMES,";
REQUIRE init_#PRIMES INITIALIZATION;
PRELOAD_WITH
");

SETFORMAT(4,0);

PRINT(PRIMES[1]);
FOR
   i ← 2 STEP 1
 UNTIL
   #PRIMES
 DO BEGIN "print a prime"
   PRINT(",");
   IF
      (i MOD 16) = 1
    THEN
      PRINT(↓);
   PRINT(PRIMES[i]);
   END   "print a prime";

SETFORMAT(0,0);

PRINT(";
INTERNAL INTEGER ARRAY PRIMES[1:",#PRIMES,"];
END   ""PRIMES""
");

SETPRINT("","T");
END   "PGEN"